var express = require('express');
var router = express.Router();
var utils = require('../../functions/utils');


router.post('/', function(req,res)
{
	var sessionKey = req.session.key;

	if(utils.isValidString(sessionKey))
	{
		var async = require('async');
		async.waterfall([
			function(cb)
			{
				utils.checkManagerSession(sessionKey , cb);
			}
			,function(result , cb) 
			{
				// 실패 - 로그인 페이지 
				if(result == 0)
				{
					utils.notifyManagerSessionExpired(req , res);
				}
				// 성공 - 실제 작업코드.
				else
				{	
				/////////////////////////////////////////////////////////////////////////////////////////////

				/*
					Input parameters 

					 *  	message

				*/

					var message = req.body.message;	utils.checkParamValue('message' , message);
					var articleUrl = req.body.articleUrl;

					var encryptedArticleId = null;

					// 받은 url로 encryptedArticleId 뺀다.
					if(utils.isValidString(articleUrl))
					{
						var l = articleUrl.split('/');
						if(l.length > 1)
							encryptedArticleId = l[l.length-1];
					}

					utils.debug(req.originalUrl);

					// 메시지를 디비에 넣었다가 빼야 하니까 master
					global.master_db.connection.getConnection(function(err,connection)
					{
						if(err) throw err;

						var params=[message , articleUrl , encryptedArticleId];
						var sql = "call manage_getTestPushKey(?, ?, ?)";
						var query = connection.query(sql, params , function (err, rows) 
						{
							connection.release();
							if(err) throw err;

							var list  = rows[0];							
							message = rows[1][0].TEST_MESSAGE;	// 디비에 넣었다가 다시 받아서 사용한다 - 그냥 패러미터로 받아서 사용하면 제대로 되는 지 확실히 알 수 가 없으니..
							articleUrl = rows[1][0].TEST_ARTICLEURL;	
							var articleId = rows[1][0].TEST_ARTICLEID;	

							if(!utils.isValidString(articleUrl))
								articleUrl = '';

							var html="<form name='thisForm' action='./push' method='post' >";
							html += "<textarea id='message' name='message' cols='0' rows='0' >";
							html += message;
							html += "</textarea>";
							html += "<input type='hidden' name='articleUrl' value='"+articleUrl+"'>";
							html +="</form><script language=javascript>document.getElementById('message').style.visibility = 'hidden';";

							// 잘못된 articleURL일 경우
							if(utils.isValidString(articleUrl) && (articleId == null || articleId == '') )
							{
								html +="alert('invalid article Url!');";
							}
							else
							{
								if(list.length > 0)
								{
									// 푸시 메시지 만든다.
									var pushList = [];
									for(var i = 0 ; i < list.length ; i ++)
									{
										var pushInfo = {};

										// 모든 푸시 공통 (token , endpointArn , appId , badge , msgid , msgType)
										pushInfo = list[i];
										pushInfo.message =  message;
										pushInfo.sound = true; //사운드 

										// article 정보가 있을 때.
										if(articleId != null && articleId != '')
										{
											pushInfo.msgType=100;	// 해당 article로 점프한다 (100으로 세팅해야 하는데 일단 아이폰에서 점프가능한 6으로 세팅)
											pushInfo.articleId=articleId;
										}

										pushList[i] = pushInfo;

									}

									// 푸시 날린다.
									var pushFunction = require('../../functions/cbPush');
									pushFunction(pushList , null);

									html +="alert('succeeded to push test message!');";

								}
							}

							html +="thisForm.submit();</script>";

							res.writeHead(200 , {'Content-Type' : 'text/html; charset=utf-8'});
							res.end(html);


						}); // replica select query

					}); // replica connection

					/////////////////////////////////////////
	
				} // result==1 
			}
		]); //waterfall
	}
	// 암것도 없으면 loginPage
	else
	{
		utils.gotoManagerLoginPage(req , res);
	}


});

module.exports = router;
